const express = require('express')
const utils = require('utility')
const Router = express.Router()
const model = require('./model')
const User = model.getModel('user')
const Chat = model.getModel('chat')
// Chat.remove({},function(e,d){})
Router.get('/list', function(req,res){
  const {type} = req.query
  // User.remove({},function(e,d){})
  User.find({type},function(err,doc){
    return res.json({code:0,data:doc})
  })
})

Router.post('/update', function(req,res){
  const {userid} = req.cookies
  if (!userid){
    return res.json({code: 1})
    // return json.dumps({code:1})
  }
  const body = req.body
  User.findByIdAndUpdate(userid, body, function(err, doc){
    const data = Object.assign({}, {
      user: doc.user,
      type: doc.type
    }, body)
    return res.json({code: 0, data})
  })
})

Router.post('/login', function(req, res){
  const {user, pwd} = req.body
  User.findOne({user, pwd:md5Pwd(pwd)},function(err, doc){
    if(!doc){
      return res.json({code:1, msg: '用户名不存在或密码错误'})
    }
    res.cookie('userid', doc._id)
    return res.json({code:0,data:doc})
  })
})


Router.post('/register', function(req, res){
  const {user, pwd, type} = req.body
  User.findOne({user:user}, function(err, doc){
    if(doc){
      return res.json({code:1, msg: '用户名重复'})
    }

    const userModel = new User({user, type, pwd: md5Pwd(pwd)})
    userModel.save(function(e, d){
      if (e) {
        return res.json({code:1, msg: '数据库出错'})
      }
      const {user, type, _id} = d
      res.cookie('userid', _id)
      return res.json({code:0, data:{user, type, _id}})
    })

    // User.create({user,type,pwd:md5Pwd(pwd)}, function(err, doc){
    //   if(err){
    //     return res.json({code:1, msg: '后端出错了'})
    //   }
    //   return res.json({code:0})
    // })
  })
})


Router.get('/info', function(req, res){
  // 用户有没有cookie
  const {userid} = req.cookies
  if(!userid){
    return res.json({code: 1})
  }
  User.findOne({_id:userid},function(err,doc){
    if (err){
      return res.json({code:1, msg: '后端出错'})
    }
    if (doc){
      return res.json({code:0, data:doc})
    }
    return res.json({code:1, msg: 'cookie有误'})
  })
})

Router.get('/getmsglist', function(req,res){
  const user = req.cookies.userid
  User.find({}, function(e,userdoc){
    let users = {}
    userdoc.forEach(v=>{
      users[v._id] = {name: v.user, avatar: v.avatar}
    })
    Chat.find({'$or':[{from:user}, {to:user}]},function(err,doc){
      if (!err){
        return res.json({code:0,msgs:doc, users: users})
      }
    })
  })
  // {'$or':[{from:user,to:user}]}
})

Router.post('/readmsg', function(req, res){
  const userid = req.cookies.userid
  const {from} = req.body
  Chat.update({from, to:userid}, {'$set':{read: true}}, {'multi': true}, function(err,doc){
    console.log(doc)
    if (!err) {
      return res.json({code:0, num:doc.nModified})
    }
    return res.json({code:1, msg: '修改失败'})
  })
})

// md5加密
function md5Pwd(pwd){
  const salt = 'imooc_is_good3243x4jfdi0!@#IJHFD~~'
  return utils.md5(utils.md5(salt+pwd))
}

module.exports = Router